Add canLaunch method to url_launcher plugin#8
Conversation
| launchIntent.setData(Uri.parse(url)); | ||
| activity.startActivity(launchIntent); | ||
| result.success(null); | ||
| } catch (java.lang.Exception exception) { |
There was a problem hiding this comment.
No need for the java.lang package name. It's implicit.
Does the code require you to catch Exception? The onMethodCall is called within a try-catch block by the framework, so any uncaught RuntimeExceptions are caught there, logged, and error results are sent back to the Dart side.
| result.success(false); | ||
| } else { | ||
| result.success(true); | ||
| } |
There was a problem hiding this comment.
Nit: if (bExp) { xxx(true); } else { xxx(false); } should often be replaced by xxx(bExp);
Here, bExp is quite long and so it may be more readable to do
boolean answer = bExp;
xxx(answer);
| private UrlLauncherPlugin(FlutterActivity activity) { | ||
| this.activity = activity; | ||
| new MethodChannel( | ||
| activity.getFlutterView(), "plugins.flutter.io/URLLauncher").setMethodCallHandler(this); |
There was a problem hiding this comment.
Decide on format for the channel name suffix: camelCase, multi_word, acronyms in lower or upper case, whatever. Just be consistent across plugins.
There was a problem hiding this comment.
Choosing multi_word to be consistent with plugins in G3
| ), | ||
| ], | ||
| ), | ||
| new FutureBuilder(future: _launched, builder: _launchStatus), |
There was a problem hiding this comment.
Should that be FutureBuilder<Null> to satisfy the analyzer? Perhaps not.
There was a problem hiding this comment.
No, but I'll add it anyway.
|
|
||
| - (NSDictionary*)launchURL:(NSString*)urlString { | ||
| - (BOOL)canLaunchURL:(NSString*)urlString { | ||
| NSURL* url = [NSURL URLWithString:urlString]; |
There was a problem hiding this comment.
What happens, if the urlString is not a URL (syntax error)?
| } | ||
|
|
||
| - (void)launchURL:(NSString*)urlString result:(FlutterResult)result { | ||
| NSURL* url = [NSURL URLWithString:urlString]; |
There was a problem hiding this comment.
According to https://developer.apple.com/reference/foundation/nsurl/1572047-urlwithstring url is nil.
| @Override | ||
| public void onMethodCall(MethodCall call, Result result) { | ||
| String url = call.arguments(); | ||
| if (call.method.equals("UrlLauncher.canLaunch")) { |
There was a problem hiding this comment.
Why prefix the method names with the name of the plugin? The channel name should be enough to separate canLaunch and launch from other uses.
|
|
||
| dependencies { | ||
| classpath 'com.android.tools.build:gradle:2.2.3' | ||
| classpath 'com.android.tools.build:gradle:2.3.1' |
There was a problem hiding this comment.
Should keep this at the same version as our templates
Fix issue on ios preventing dart to see the start of the recording
FAILURE: Build failed with an exception.
* Where:
Build file 'C:\Users\srburton\AppData\Roaming\Pub\Cache\hosted\pub.dartlang.org\shared_preferences_macos-0.0.1+6\android\build.gradle' line: 22
* What went wrong:
A problem occurred evaluating root project 'shared_preferences_macos'.
> Failed to apply plugin [id 'com.android.library']
> Minimum supported Gradle version is 5.4.1. Current version is 5.1.1. If using the gradle wrapper, try editing the distributionUrl in
C:\Users\srburton\AppData\Roaming\Pub\Cache\hosted\pub.dartlang.org\shared_preferences_macos-0.0.1+6\android\gradle\wrapper\gradle-wrapper.properties to gradle-5.4.1-all.zip
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1s
[ +1 ms] Running Gradle task 'assembleAarRelease'... (completed in 2,0s)
[ ]
FAILURE: Build failed with an exception.
* Where:
Build file 'C:\Users\srburton\AppData\Roaming\Pub\Cache\hosted\pub.dartlang.org\shared_preferences_macos-0.0.1+6\android\build.gradle' line: 22
* What went wrong:
A problem occurred evaluating root project 'shared_preferences_macos'.
> Failed to apply plugin [id 'com.android.library']
> Minimum supported Gradle version is 5.4.1. Current version is 5.1.1. If using the gradle wrapper, try editing the distributionUrl in
C:\Users\srburton\AppData\Roaming\Pub\Cache\hosted\pub.dartlang.org\shared_preferences_macos-0.0.1+6\android\gradle\wrapper\gradle-wrapper.properties to gradle-5.4.1-all.zip
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1s
[ +5 ms] "flutter apk" took 179.497ms.
The plugin shared_preferences_macos could not be built due to the issue above.
#0 throwToolExit (package:flutter_tools/src/base/common.dart:28:3)
flutter#1 buildPluginsAsAar (package:flutter_tools/src/android/gradle.dart:726:7)
flutter#2 _asyncErrorWrapperHelper.<anonymous closure> (dart:async-patch/async_patch.dart:80:45)
#3 _rootRunBinary (dart:async/zone.dart:1146:38)
flutter#4 _CustomZone.runBinary (dart:async/zone.dart:1039:19)
flutter#5 _FutureListener.handleError (dart:async/future_impl.dart:153:20)
flutter#6 Future._propagateToListeners.handleError (dart:async/future_impl.dart:692:47)
flutter#7 Future._propagateToListeners (dart:async/future_impl.dart:713:24)
flutter#8 Future._completeError (dart:async/future_impl.dart:532:5)
flutter#9 _AsyncAwaitCompleter.completeError (dart:async-patch/async_patch.dart:38:15)
flutter#10 buildGradleAar (package:flutter_tools/src/android/gradle.dart)
flutter#11 _asyncThenWrapperHelper.<anonymous closure> (dart:async-patch/async_patch.dart:73:64)
flutter#12 _rootRunUnary (dart:async/zone.dart:1134:38)
flutter#13 _CustomZone.runUnary (dart:async/zone.dart:1031:19)
flutter#14 _FutureListener.handleValue (dart:async/future_impl.dart:139:18)
flutter#15 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:680:45)
flutter#16 Future._propagateToListeners (dart:async/future_impl.dart:709:32)
#17 Future._completeWithValue (dart:async/future_impl.dart:524:5)
flutter#18 _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:32:15)
flutter#19 _completeOnAsyncReturn (dart:async-patch/async_patch.dart:290:13)
flutter#20 _DefaultProcessUtils.run (package:flutter_tools/src/base/process.dart)
flutter#21 _asyncThenWrapperHelper.<anonymous closure> (dart:async-patch/async_patch.dart:73:64)
flutter#22 _rootRunUnary (dart:async/zone.dart:1134:38)
flutter#23 _CustomZone.runUnary (dart:async/zone.dart:1031:19)
flutter#24 _FutureListener.handleValue (dart:async/future_impl.dart:139:18)
flutter#25 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:680:45)
flutter#26 Future._propagateToListeners (dart:async/future_impl.dart:709:32)
flutter#27 Future._completeWithValue (dart:async/future_impl.dart:524:5)
flutter#28 Future.wait.<anonymous closure> (dart:async/future.dart:400:22)
flutter#29 _rootRunUnary (dart:async/zone.dart:1134:38)
flutter#30 _CustomZone.runUnary (dart:async/zone.dart:1031:19)
flutter#31 _FutureListener.handleValue (dart:async/future_impl.dart:139:18)
flutter#32 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:680:45)
flutter#33 Future._propagateToListeners (dart:async/future_impl.dart:709:32)
flutter#34 Future._completeWithValue (dart:async/future_impl.dart:524:5)
flutter#35 Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:554:7)
flutter#36 _rootRun (dart:async/zone.dart:1126:13)
flutter#37 _CustomZone.run (dart:async/zone.dart:1023:19)
flutter#38 _CustomZone.runGuarded (dart:async/zone.dart:925:7)
flutter#39 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:965:23)
flutter#40 _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
flutter#41 _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)
flutter#42 _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:118:13)
flutter#43 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:175:5)
Update master
…ocus-feature Android rework test autofocus feature
No description provided.